SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

CREATE PROCEDURE [dbo].[pje_porEstudiosParciales] @idInscripcion as integer ,@pje as float output,@resultado as int  AS
set nocount on
declare  @idAgente as int,@idCargoGenerico as int,@idAsignaturaGenerica as int, @idTipoConvocatoria as int ,@idlocalidad as int, @FechaLimite as datetime,@nivel_insc as int,@ciclo as int
declare @Titulo1 as int,@Titulo2 as int,@MateriasPlan as int,@CantidadMateriasAprobadas as int,@valorDeAcumulacion as int,@puntaje as int
declare @EstudioParcial_influyente_en_titulo as integer
declare @concepto as int , @PJEPORTITULO as int

DECLARE @Error INT

BEGIN TRANSACTION
             SET @ERROR=0

--Corrección para 3er ciclo
if @nivel_insc = 3 and @ciclo = 2 set  @nivel_insc=4

select  @idAgente=i.Agente,@IdcargoGenerico = i.CargoGenerico,@IdAsignaturaGenerica=i.AsignaturaGenerica,@idtipoConvocatoria=Conv.TipoConvocatoria,@FechaLimite=Conv.FechaLimite,@nivel_insc = i.nivel,@ciclo=isnull(ciclo,1)
	from 
	tb_inscripcionesConvocatorias i 
		join tb_Convocatorias conv on i.Convocatoria=conv.idConvocatoria 
	where i.idInscripcionConvocatoria=@idInscripcion

-- ME FIJO  EL PUNTAJE POR TITULO YA QUE ESTE ITEM SE VALORA SOLO PARA LOS TITULOS DOCENTES O HABILITANTES CON CAPAC.
select @concepto =case @idTipoConvocatoria 
when 1 then 189
when 2 then  293
when 3 then  600
when 4 then 428
when 9 then 543
end

SELECT @PJEPORTITULO=PUNTAJE FROM TB_CALIFICACIONESDEINSCRIPCION WHERE INSCRIPCION=@idInscripcion AND CONCEPTO=@concepto

print  @PJEPORTITULO

set @pje=0
if  @idTipoConvocatoria in (1,2,3,4,5,9) and @PJEPORTITULO > 18
begin

   -- Primero me fijo si el agente posee un estudio parcial que sea de profesorado con el 75% de la carrera aprobada, en este caso
   -- se valora como tiulo (Profesorado inconcluso) y no como estudio parcial (OJO , supongo que para el cargo,asignatura en cuestion el agente tiene un solo estudio parcial de profesorado con el 75% de la carrera aprobada)

set @EstudioParcial_influyente_en_titulo = 0



   declare c cursor FORWARD_ONLY FOR
		select distinct Titulo1,Titulo2,MateriasPlan,CantidadMateriasAprobadas,valorDeAcumulacion,puntaje
		from
		tb_EstudiosParciales EP
join tb_gruposDeIncumbencias G on G.idGrupoIncumbencia=EP.GrupoIncumbencias
join tb_incumbencias h on G.idGrupoINCUMBENCIA=h.grupoIncumbencia
		join tb_AcumulacionTitulosDelAgente  AcTA on EP.Agente=AcTA.Agente 
		join tb_AcumulacionDeTitulos AcT on AcTA.Acumulacion=AcT.idAcumulacion and Act.Titulo2=EP.Titulo
		join tb_TitulosDelAgente TAg on TAg.Agente=Ep.Agente and Act.Titulo1=TAg.titulo
		join Tb_valoresDeAcumulacion V on AcT.ValorDeAcumulacion=V.IdValorAcumulacion 
		where ep.agente = @idAgente and  act.cargoGenerico=@IdCargoGenerico  and h.cargoGenerico=@IdCargoGenerico
		 and h.asignaturaGenerica=@IdAsignaturaGenerica and act.asignaturaGenerica=@IdAsignaturaGenerica and acumulacionEstudioparcial='E' and EP.FechaPresentacion <= @FechaLimite
		SET @Error = @@ERROR 
		IF @Error <> 0 GOTO Salir

   open c
   fetch next from c into @Titulo1,@Titulo2,@MateriasPlan,@CantidadMateriasAprobadas,@valorDeAcumulacion,@puntaje
   set @pje=0

   while @@FETCH_STATUS = 0
       begin

	print @EstudioParcial_influyente_en_titulo
	print @titulo2
	
		if (@CantidadMateriasAprobadas*1.00 / @MateriasPlan*@puntaje) > @pje  

			set @pje= (@CantidadMateriasAprobadas *1.00 / @MateriasPlan)*@puntaje
		 
              fetch next from c into @Titulo1,@Titulo2,@MateriasPlan,@CantidadMateriasAprobadas,@valorDeAcumulacion,@puntaje
    end  

        close c
        deallocate c
        set @resultado = 0

end

print "puntaje  " + cast( @pje as varchar)

Salir:
IF @Error <> 0 
	ROLLBACK TRANSACTION
ELSE 
	COMMIT TRANSACTION
GO
GRANT EXECUTE ON  [dbo].[pje_porEstudiosParciales] TO [Juntas]
GO
